package activity;

import edos.prm.actor.Actor;
import edos.prm.artifact.Artifact;
import edos.prm.artifact.Attribute;

/**
 * A {@code Balloon} is an example of an artifact. It is managed by a process
 * that handles production and quality control of balloons.
 */
public final class Balloon implements Artifact {

	private License license;
	private int size;
	private Actor owner;
	
	/**
	 * Create a balloon with given size and license
	 * 
	 * @param license the license associated with the new balloon
	 * @param size the size of the balloon
	 */
	public Balloon(License license, Integer size) {
		this.license = license;
		this.size = size;
	}

	/**
	 * Returns the license associated with this balloon
	 * 
	 * @return the license of this balloon
	 */
	@Attribute 
	public License getLicense() {
		return license;
	}
	
	/**
	 * Returns the size of this balloon
	 * 
	 * @return the size of this balloon as an integer
	 */
	@Attribute 
	public Integer getSize() {
		return size;
	}
	
	/**
	 * Gives the owner of this ballon
	 * 
	 * @return the actor who owns this balloon.
	 */
	@Attribute 
	public Actor getOwner() {
		return owner;
	}
	
	/**
	 * Sets the owner of this balloon to the specified actor
	 * 
	 * @param owner the new owner actor of this balloon
	 */
	public void setOwner(Actor owner) {
		this.owner = owner;
	}
}
